home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / db4less3.arc / TIME.FRG < prev    next >
Text File  |  1990-06-16  |  6KB  |  315 lines

  1. * Program............: D:\DBSYS\CLASSES\BT4W\TIME.FRG
  2. * Date...............: 12-04-88
  3. * Versions...........: dBASE IV, Report 1
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap
  16.  
  17. *-- Test for no records found
  18. IF EOF() .OR. .NOT. FOUND()
  19.    RETURN
  20. ENDIF
  21.  
  22. *-- turn word wrap mode off
  23. _wrap=.F.
  24.  
  25. IF _plength < 9
  26.    SET DEVICE TO SCREEN
  27.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  28.    ACTIVATE WINDOW gw_report
  29.    @ 0,1 SAY "Increase the page length for this report."
  30.    @ 2,1 SAY "Press any key ..."
  31.    x=INKEY(0)
  32.    DEACTIVATE WINDOW gw_report
  33.    RELEASE WINDOW gw_report
  34.    RETURN
  35. ENDIF
  36.  
  37. _plineno=0          && set lines to zero
  38. *-- NOEJECT parameter
  39. IF gl_noeject
  40.    IF _peject="BEFORE"
  41.       _peject="NONE"
  42.    ENDIF
  43.    IF _peject="BOTH"
  44.       _peject="AFTER"
  45.    ENDIF
  46. ENDIF
  47.  
  48. *-- Set-up environment
  49. ON ESCAPE DO prnabort
  50. IF SET("TALK")="ON"
  51.    SET TALK OFF
  52.    gc_talk="ON"
  53. ELSE
  54.    gc_talk="OFF"
  55. ENDIF
  56. gc_space=SET("SPACE")
  57. SET SPACE OFF
  58. gc_time=TIME()      && system time for predefined field
  59. gd_date=DATE()      && system date  "    "    "     "
  60. gl_fandl=.F.        && first and last page flag
  61. gl_prntflg=.T.      && Continue printing flag
  62. gl_widow=.T.        && flag for checking widow bands
  63. gn_length=LEN(gc_heading)  && store length of the HEADING
  64. gn_level=2          && current band being processed
  65. gn_page=_pageno     && grab current page number
  66.  
  67.  
  68.  
  69. *-- Set up procedure for page break
  70. IF _pspacing > 1
  71.    gn_atline=_plength - (_pspacing + 1)
  72. ELSE
  73.    gn_atline=_plength - 1
  74. ENDIF
  75. ON PAGE AT LINE gn_atline EJECT PAGE
  76.  
  77. *-- Print Report
  78.  
  79. PRINTJOB
  80.  
  81. gl_newpage=.T.      && ok to begin band on new page
  82.  
  83. *-- Initialize group break vars.
  84. r_mvar4=DATE
  85.  
  86. *-- Initialize summary variables.
  87. r_msum1=0
  88. DECLARE r_msum2[3]
  89. STORE 0 TO r_msum2[1]
  90. STORE 0 TO r_msum2[2],r_msum2[3]
  91.  
  92. IF gl_plain
  93.    ON PAGE AT LINE gn_atline DO Pgplain
  94. ELSE
  95.    ON PAGE AT LINE gn_atline DO Pgfoot
  96. ENDIF
  97.  
  98. DO Pghead
  99.  
  100. gl_fandl=.T.        && first physical page started
  101.  
  102. DO Grphead
  103.  
  104. *-- File Loop
  105. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  106.    DO CASE
  107.    CASE .NOT. (DATE = r_mvar4)
  108.       gn_level=4
  109.    OTHERWISE
  110.       gn_level=0
  111.    ENDCASE
  112.    *-- test whether an expression didn't match
  113.    IF gn_level <> 0
  114.       DO Grpfoot WITH 100-gn_level
  115.       DO Grpinit
  116.    ENDIF
  117.    *-- Repeat group intros
  118.    IF gn_level <> 0
  119.       DO Grphead
  120.    ENDIF
  121.    DO Upd_Vars
  122.    *-- Detail lines
  123.    IF .NOT. gl_summary
  124.       DO Detail
  125.    ENDIF
  126.    CONTINUE
  127. ENDDO
  128.  
  129. IF gl_prntflg
  130.    gn_level=3
  131.    DO Grpfoot WITH 97
  132. ELSE
  133.    DO Reset
  134.    RETURN
  135. ENDIF
  136.  
  137. ON PAGE
  138.  
  139. ENDPRINTJOB
  140.  
  141. DO Reset
  142. RETURN
  143. * EOP: D:\DBSYS\CLASSES\BT4W\TIME.FRG
  144.  
  145. *-- Update summary fields and/or calculated fields in the detail band.
  146. PROCEDURE Upd_Vars
  147. *-- Summary calculation - Sum
  148. r_msum1=r_msum1+HOURS
  149. *-- Summary calculation - Average
  150. r_msum2[1]=r_msum2[1]+1                && count
  151. r_msum2[2]=r_msum2[2]+HOURS            && sum
  152. r_msum2[3]=r_msum2[2]/r_msum2[1]       && average
  153. RETURN
  154. * EOP: Upd_Vars
  155.  
  156. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  157. PROCEDURE prnabort
  158. gl_prntflg=.F.
  159. RETURN
  160. * EOP: prnabort
  161.  
  162. *-- Reset group break variables.  Reinit summary
  163. *-- fields with reset set to a particular group band.
  164. PROCEDURE Grpinit
  165. IF gn_level <= 4
  166.    r_msum1=0
  167.    STORE 0 TO r_msum2[1]
  168.    STORE 0 TO r_msum2[2],r_msum2[3]
  169. ENDIF
  170. IF gn_level <= 4
  171.    r_mvar4=DATE
  172. ENDIF
  173. RETURN
  174. * EOP: Grpinit
  175.  
  176. *-- Process Group Intro bands during group breaks
  177. PROCEDURE Grphead
  178. IF EOF()
  179.    RETURN
  180. ENDIF
  181. gl_widow=.T.         && enable widow checking
  182. IF gn_level <= 4
  183.    DO Head4
  184. ENDIF
  185. gn_level=0
  186. RETURN
  187. * EOP: Grphead.PRG
  188.  
  189. *-- Process Group Summary bands during group breaks
  190. PROCEDURE Grpfoot
  191. PARAMETER ln_level
  192. IF ln_level >= 96
  193.    DO Foot96
  194. ENDIF
  195. RETURN
  196. * EOP: Grpfoot.PRG
  197.  
  198. PROCEDURE Pghead
  199. ?
  200. IF .NOT. gl_plain
  201.    ?? "Page No." AT 0,
  202.    ?? _pageno PICTURE "999" AT 9
  203. ENDIF
  204. *-- Print HEADING parameter ie. REPORT FORM <name> HEADING <expC>
  205. IF .NOT. gl_plain .AND. gn_length > 0
  206.    ?? " "
  207.    ?? gc_heading FUNCTION "I;V"+;
  208.    LTRIM(STR(_rmargin-_lmargin-(_pcolno*2+2)))
  209. ENDIF
  210. IF .NOT. gl_plain
  211.    ?
  212. ENDIF
  213. ?? "Report Date" AT 0,
  214. ?? IIF(gl_plain,'',gd_date) AT 12
  215. ?
  216. ?? "TIME SLIP REPORT" AT 33
  217. ?
  218. ?
  219. ?
  220. ?? ;
  221. "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒";
  222. + "▒▒▒▒▒▒▒▒▒";
  223. AT 0
  224. ?
  225. RETURN
  226. * EOP: Pghead
  227.  
  228.  
  229. PROCEDURE Head4
  230. IF .NOT. gl_newpage
  231.    gl_newpage=.T.
  232.    EJECT PAGE
  233. ENDIF
  234. IF 3 < _plength
  235.    IF (gl_widow .AND. _plineno+3 > gn_atline) ;
  236.    .OR. (gl_widow .AND. _plineno+2 > gn_atline)
  237.       EJECT PAGE
  238.    ENDIF
  239. ENDIF
  240. ?
  241. ?? "WEEK ENDING:" AT 5,
  242. ?? DATE AT 19,
  243. ?? "EMPLOYEE" AT 31,
  244. ?? "JOB" AT 45,
  245. ?? "HOURS" AT 59
  246. ?
  247. ?
  248. gl_newpage=.F.
  249. RETURN
  250.  
  251. PROCEDURE Detail
  252. ?? EMPID FUNCTION "T" AT 32,
  253. ?? JOBID FUNCTION "T" AT 44,
  254. ?? HOURS PICTURE "999.99" AT 58
  255. ?
  256. gl_newpage=.F.
  257. RETURN
  258. * EOP: Detail
  259.  
  260. PROCEDURE Foot96
  261. ?
  262. ?? "WEEKLY TOTAL:" AT 39,
  263. ?? r_msum1 PICTURE "9,999.99" AT 56
  264. ?
  265. ?
  266. ?? "AVG:" AT 46,
  267. ?? r_msum2[3] PICTURE "999.99" AT 58
  268. ?
  269. gl_newpage=.F.
  270. RETURN
  271.  
  272.  
  273. PROCEDURE Pgfoot
  274. PRIVATE _box
  275. gl_widow=.F.         && disable widow checking
  276. EJECT PAGE
  277. gl_newpage=.T.
  278. *-- is the page number greater than the ending page
  279. IF _pageno > _pepage
  280.    GOTO BOTTOM
  281.    SKIP
  282.    gn_level=0
  283. ENDIF
  284. IF .NOT. gl_plain .AND. gl_fandl
  285.    DO Pghead
  286. ENDIF
  287. IF gn_level = 0 .AND. gl_fandl
  288.    gn_level=1
  289.    DO Grphead
  290. ENDIF
  291. gl_widow=.T.         && enable widow checking
  292. RETURN
  293. * EOP: Pgfoot
  294.  
  295. *-- Process page break when PLAIN option is used.
  296. PROCEDURE Pgplain
  297. PRIVATE _box
  298. EJECT PAGE
  299. IF gn_level = 0 .AND. gl_fandl
  300.    gn_level=1
  301.    DO Grphead
  302. ENDIF
  303. RETURN
  304. * EOP: Pgplain
  305.  
  306. *-- Reset dBASE environment prior to calling report
  307. PROCEDURE Reset
  308. SET SPACE &gc_space.
  309. SET TALK &gc_talk.
  310. ON ESCAPE
  311. ON PAGE
  312. RETURN
  313. * EOP: Reset
  314.  
  315.